The present invention relates generally to the field of software analysis, and more particularly to refining data understanding through impact analysis.
Software is developed for a variety of purposes, typically to meet client requirements, a perceived need, or for personal use. Software development employs a software development methodology, either a software development life cycle (i.e., plan describing how to develop, maintain, and replace software) or agile methodology (i.e., iterative and incremental collaborative process of cross-functional teams). Examples of software development life cycle methodologies include: waterfall (i.e., sequential development), spiral (i.e., combination of design and prototyping), and incremental (i.e., breaking a project into smaller segments). Types of agile methodologies include: rapid application development (i.e., minimal planning with rapid prototyping), adaptive software development (i.e., repeating series of speculate, collaborate, and learn cycles), and dynamic system development method (i.e., iterative and incremental with continuous user/customer involvement).
Software development involves designing, programming, testing, and maintaining of source code from inception to completion of a software program. Programming involves the creation of a software program through written source code. Source code is a collection of computer instructions written in a computer language which specifies actions to be performed by a computer device to achieve the requirements. Once a software program is developed, computer programmers can employ a combination of different types of software testing (e.g., static or dynamic testing) to verify requirements are met and to eliminate unforeseen errors. Static testing verifies the code structure, syntax, and data flow. Dynamic testing executes the software program code with a given set of test cases verifying functionality. At the successful completion of software testing, a software program is then released to use in the manner it was developed and may be enhanced or maintained over time.
After development and release, software programs may evolve through technology changes, maintenance, enhancements, and innovation. To evaluate ramifications of a planned or incorporated change, an impact analysis may be employed on the software. Impact analysis includes a collection of techniques for determining the effects of a proposed or implemented change on other parts of software. Impact analysis supports the comprehension, implementation, and evaluation of changes within a software program by identifying what is affected, where source code changes need to be made, and why a change should be made by analyzing program syntax and focusing on the source code.